<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        /* es6之前没有class */
        /* 构造函数 */
        /* 
        Person
        自有函数 name，age 
        共有方法  原型上定义 sayName，之后所有使用关键字的实力都有这个方法
        共有属性  */
        function Person(name,age){
            this.name = name;
            this.age = age;
        }
        Person.prototype.sayName = function(){
            console.log(this.name);  //lisi
        }
        Person.prototype.sayAge = function(){
            console.log(this.age);  //18
        }
        Person.prototype.skill = "vue"
        var p = new Person("lisi",18);
        
        p.sayName();
        p.sayAge();
        console.log(p.skill);  //vue
        /* hasOwnProperty()  判断一个属性是自由还有共有的 */
        console.log(p.hasOwnProperty("skill"));  //false

        /* 构造函数的特点：
        1.构造函数的首字母大写
        2.在构造函数内部可以通过this关键字，给其添加自由属性
        3.可以通过new关键字实例化一个对象 */
    </script>
</body>
</html>